import api from '../utils/api'

// 认证服务
export const authService = {
  // 用户登录
  login: async (credentials) => {
    try {
      const data = await api.post('/api/auth/login', credentials)
      // 统一处理返回格式，确保正确提取用户信息
      const userInfo = {
        id: data.userId || data.id, // 优先使用id，如果没有则使用userId
        userId: data.userId || data.id, // 保持向后兼容
        username: data.username,
        email: data.email,
        phoneNumber: data.phoneNumber,
        nickName: data.nickName,
        avatarUrl: data.avatarUrl,
        gender: data.gender,
        roles: data.roles,
        userType: data.userType
      }
      // 返回统一格式，存储逻辑由store处理
      return {
        token: data.token,
        refreshToken: data.refreshToken,
        userInfo: userInfo
      }
    } catch (error) {
      throw error
    }
  },
  
  // 用户注册
  register: async (userData) => {
    try {
      console.log('authService: 发送注册请求', userData)
      
      // 构建符合后端期望的请求数据结构
      const requestData = {
        username: userData.username,
        password: userData.password,
        email: userData.email,
        phoneNumber: null,  // 明确设置为null，避免验证问题
        nickName: userData.username  // 使用用户名作为默认昵称
      }
      
      console.log('authService: 处理后的请求数据', requestData)
      const data = await api.post('/api/auth/register', requestData)
      console.log('authService: 注册响应', data)
      // 统一处理返回格式，确保正确提取用户信息
      const userInfo = {
        id: data.userId || data.id, // 优先使用id，如果没有则使用userId
        userId: data.userId || data.id, // 保持向后兼容
        username: data.username,
        email: data.email,
        phoneNumber: data.phoneNumber,
        nickName: data.nickName,
        avatarUrl: data.avatarUrl,
        gender: data.gender,
        roles: data.roles,
        userType: data.userType
      }
      // 返回统一格式，存储逻辑由store处理
      // 返回统一格式
      return {
        token: data.token,
        refreshToken: data.refreshToken,
        userInfo: userInfo
      }
    } catch (error) {
      console.error('authService: 注册失败', error)
      throw error
    }
  },
  
  // 刷新令牌
  refreshToken: async (refreshToken) => {
    try {
      const data = await api.post(`/api/auth/refresh-token?refreshToken=${refreshToken}`)
      // 统一处理返回格式，确保正确提取用户信息
      const userInfo = {
        id: data.userId || data.id, // 优先使用id，如果没有则使用userId
        userId: data.userId || data.id, // 保持向后兼容
        username: data.username,
        email: data.email,
        phoneNumber: data.phoneNumber,
        nickName: data.nickName,
        avatarUrl: data.avatarUrl,
        gender: data.gender,
        roles: data.roles,
        userType: data.userType
      }
      // 返回统一格式，存储逻辑由store处理
      // 返回统一格式
      return {
        token: data.token,
        refreshToken: data.refreshToken,
        userInfo: userInfo
      }
    } catch (error) {
      throw error
    }
  },
  
  // 用户注销
  logout: async () => {
    try {
      await api.post('/api/auth/logout')
      // 清除逻辑由store统一处理
      return true
    } catch (error) {
      // 注销请求失败
      throw error
    }
  }
}

// 用户服务
export const userService = {
  // 获取用户信息
  getUserInfo: async (userId) => {
    try {
      return await api.get(`/api/users/${userId}`)
    } catch (error) {
      throw error
    }
  }
}